Storage systems generally have a physical storage medium which stores data, and a storage controller which controls the physical storage medium. The storage controller provides data storage space (generally a logical volume) to a computer coupled to the storage system (for example a host computer).
Storage systems can increase the speed of I/O (input/output) processing and produce a high degree of fault-resistance in physical storage media through the use of a plurality of physical storage media in a RAID (Redundant Array of Independent (or Inexpensive) Disks).
Storage systems are generally mounted with an HDD (hard disk drive) as the physical storage medium, but in recent years storage media such as an SSD (Solid-State Drive) have become known which have a flash memory (hereinafter FM) as the physical storage medium.
An SSD has a memory capable of performing extremely rapid I/O processing compared to an HDD. At the same time the SSD has a limited lifetime. This limited lifetime of the SSD will now be described.
With FM (typically a NAND-type flash memory) when data is being rewritten, it is not possible to directly overwrite the data into the physical storage area, where this data is stored). In order to rewrite the data in this physical storage area, it is necessary to carry out a deletion process (hereinafter block deletion) for the data in the physical storage area in FM deletion units, known as blocks, and write data into a physical storage area in which block deletion has taken place.
However, due to physical restrictions on an FM, there is a limit to the number of block deletions that can be done for each block (hereinafter the number of deletions). Thus, when the number of deletions for a certain block goes past this limit, it is no longer possible for data to be stored in this block. In other words, when the number of deletions for the all the blocks (or spare areas) in the SSD goes over the limit, the SSD has reached the end of its life.
Attempts are being made to extend the lifetime of the SSD using a method known as Wear Leveling (hereinafter WL). This is a technology which levels out the number of deletions between blocks and suppresses deterioration in one particular block by controlling the data storage units such that data which is frequently updated is stored in a block whose number of deletions is small, and data which is updated infrequently is stored in blocks whose number of deletions is high.
Storage systems are known in which a plurality of SSDs are mounted as the physical storage medium. In such storage systems, there can be an imbalance in the load between the SSDs with load concentrated on a particular SSD, even where deterioration in a specific block within a single SSD is suppressed. Methods are known which, by applying WL between SSDs as well, is able to extend the lifetime of the overall storage system by leveling out the number of deletions across the plurality of SSDs. For example, there is a technique which determines target data for migration based on the average number of deletions by estimating the average number of deletions, the storage controller storing the gross quantity of writes taking place to the SSD as statistical data, and then dividing the gross number of writes by the physical capacity of the SSD, or a technique in which the storage controller acquires internal data such as the number of deletions and the write quantity for each block from the SSD, the storage controller determining target data for migration based on this information (PTL 1, PTL 2). In what follows, WL carried out between devices such as SSDs will be referred to as “inter-device WL”. With inter-device WL, the storage controller determines the SSD and data targeted for migration.
Moreover, there are techniques which by reducing the quantity of data stored in the physical storage medium through data compression, enable a reduction in the footprint and reduce bit costs. For example, techniques are known whereby the storage controller compresses the write data received from the host, storing the compressed data in the storage medium (for example, PTL 3).